Attaching package: 㤼㸱lubridate㤼㸲
The following object is masked from 㤼㸱package:base㤼㸲:
date
pros_agg = pros_df%>%
mutate(yr = year(origination_date),mn = month(origination_date))%>%
#group_by(yr,mn, prosper_rating)%>%
group_by(origination_date,prosper_rating,yr,mn)%>%
summarize(avg_amt_borrowed = mean(amount_borrowed),
w_avg_rate = weighted.mean(borrower_rate,amount_borrowed))%>%
mutate(org_dt = ymd(paste(yr,mn,'01',sep = '-')))
pros_agg2 = pros_df%>%
mutate(yr = year(origination_date),mn = month(origination_date))%>%
group_by(yr,mn, prosper_rating)%>%
#group_by(origination_date,prosper_rating,yr,mn)%>%
summarize(avg_amt_borrowed = mean(amount_borrowed),
w_avg_rate = weighted.mean(borrower_rate,amount_borrowed))%>%
mutate(org_dt = ymd(paste(yr,mn,'01',sep = '-')))
A little about me before we begin:
Modeler at Bank of America
Avid Star Wars Fan

Amatuer user and ardent supporter of version control in data science

R user for the last 9 years.
Used R for modeling and development at American Credit Acceptance before coming to Bank of America.

- Introduced and championed Shiny for rapid application development
- Developed various models and process improvements using R tool kit
Bank of America work:

- Modeling Lead for Consumer Behavior Modeling:
- Worked on Risk Models for a year
- Currently working on Innovation team (Best job I think I will ever have):
- New modeling ideas
- New areas of the business that would benefit from modeling knowledge
- Application of deep learning
What is this presenation?
I enjoy the data visualization side of data science
ggplot was always go too for my data science needs
ggplot is an adoption of the precepts laid out in the Grammar of Graphics

ggplot doesn’t lend itself to interactivity
- several efforts have introduced interactivity
- ggvis
- rggobi
- iPlots
- htmlwidgets
- r2d3
htmlwidets and r2d3 are an adaptation of D3/javascript technology
D3 is a javascript package that is very important in data visualization
- Written in a language that integrates with web development
- Uses data to manipulate the web document through various objects (SVG)
- Released in 2011
Useful examples of power and interactivity:
Sunburst Example

D3 Pros and Cons
Pros - Very flexible and portable - Interactivity part of the dna - Looks very professional and polished
Cons - Very steep learning curve - API requires decent understanding of how javascript - Centered on webdevelopment instead of data science - ?Falling out of favor?
What is the answer?
Plot.ly is a solution with a simpler API and out of the box interactivity
Essentially plot.ly is API wrapper for several D3
How does the plotly package work
Key to understading package is understanding how it transforms the data
- Data enters in R formats
- Transformed to list format
- Tranformed to JSON format
Below is a useful diagram showing how the final presentation is done.

Plotly uses two key components:
- Data/Trace:
- Connection between data and visuals
- Traces have types (scatter plot, histograms, sunburst, etc.)
- Trace types have specific atttributes that can be defined.
- Layout
ggplotly() to the rescue
If you have plots in ggplot, you can start using plotly with just a simple function call on most ggplot objects.
Let’s make a ggplot from Propser data.
amt_fin_p = pros_agg%>%
ggplot(aes(origination_date,avg_amt_borrowed))+
geom_line(aes(color = prosper_rating))
amt_fin_p

Simple ggplotly command adds the tooltip, zooming,
ggplotly(amt_fin_p)
Now the plotly syntax:
pros_agg%>%
plot_ly(x = ~origination_date, y = ~avg_amt_borrowed, color = ~prosper_rating, type = 'scatter', mode = 'lines')
# add_lines(color = ~prosper_rating)
plot(cars)
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.
LS0tDQp0aXRsZTogIlBsb3QubHk6IEhvdyBJIGxlYXJuZWQgYSAodmVyeSBsaXR0bGUpIGphdmEgc2NyaXB0IGFuZCBsb3ZlIGludGVyYWN0aXZlIHBsb3RzOiINCmF1dGhvcjogIkRhdmlkIEdyaW5kZXIiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgZWNobz0gRkFMU0V9DQojSW1wb3J0IGxpYnJhcmllcw0KDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkobGlzdHZpZXdlcikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpgYGANCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCiNJbXBvcnRpbmcgZGF0YQ0KcHJvc19kZiA9IHJlYWRfY3N2KCJwcm9zcGVyMjAxOS5jc3YiKQ0KDQpgYGANCg0KYGBge3J9DQoNCnByb3NfYWdnID0gcHJvc19kZiU+JQ0KICBtdXRhdGUoeXIgPSB5ZWFyKG9yaWdpbmF0aW9uX2RhdGUpLG1uID0gbW9udGgob3JpZ2luYXRpb25fZGF0ZSkpJT4lDQogICNncm91cF9ieSh5cixtbiwgcHJvc3Blcl9yYXRpbmcpJT4lDQogIGdyb3VwX2J5KG9yaWdpbmF0aW9uX2RhdGUscHJvc3Blcl9yYXRpbmcseXIsbW4pJT4lDQogIHN1bW1hcml6ZShhdmdfYW10X2JvcnJvd2VkID0gbWVhbihhbW91bnRfYm9ycm93ZWQpLA0KICAgICAgICAgICAgd19hdmdfcmF0ZSA9IHdlaWdodGVkLm1lYW4oYm9ycm93ZXJfcmF0ZSxhbW91bnRfYm9ycm93ZWQpKSU+JQ0KICBtdXRhdGUob3JnX2R0ID0geW1kKHBhc3RlKHlyLG1uLCcwMScsc2VwID0gJy0nKSkpDQogIA0KcHJvc19hZ2cyID0gcHJvc19kZiU+JQ0KICBtdXRhdGUoeXIgPSB5ZWFyKG9yaWdpbmF0aW9uX2RhdGUpLG1uID0gbW9udGgob3JpZ2luYXRpb25fZGF0ZSkpJT4lDQogIGdyb3VwX2J5KHlyLG1uLCBwcm9zcGVyX3JhdGluZyklPiUNCiAgI2dyb3VwX2J5KG9yaWdpbmF0aW9uX2RhdGUscHJvc3Blcl9yYXRpbmcseXIsbW4pJT4lDQogIHN1bW1hcml6ZShhdmdfYW10X2JvcnJvd2VkID0gbWVhbihhbW91bnRfYm9ycm93ZWQpLA0KICAgICAgICAgICAgd19hdmdfcmF0ZSA9IHdlaWdodGVkLm1lYW4oYm9ycm93ZXJfcmF0ZSxhbW91bnRfYm9ycm93ZWQpKSU+JQ0KICBtdXRhdGUob3JnX2R0ID0geW1kKHBhc3RlKHlyLG1uLCcwMScsc2VwID0gJy0nKSkpDQoNCg0KYGBgDQoNCg0KDQojIEEgbGl0dGxlIGFib3V0IG1lIGJlZm9yZSB3ZSBiZWdpbjoNCg0KDQpNb2RlbGVyIGF0IEJhbmsgb2YgQW1lcmljYQ0KDQpBdmlkIFN0YXIgV2FycyBGYW4NCg0KIVtdKHJldHVybl9vZl9qZWRpLmpwZykNCg0KQW1hdHVlciB1c2VyIGFuZCBhcmRlbnQgc3VwcG9ydGVyIG9mIHZlcnNpb24gY29udHJvbCBpbiBkYXRhIHNjaWVuY2UNCg0KIVtdKGdpdC5wbmcpDQoNClIgdXNlciBmb3IgdGhlIGxhc3QgOSB5ZWFycy4NCg0KVXNlZCBSIGZvciBtb2RlbGluZyBhbmQgZGV2ZWxvcG1lbnQgYXQgQW1lcmljYW4gQ3JlZGl0IEFjY2VwdGFuY2UgYmVmb3JlIGNvbWluZyB0byBCYW5rIG9mIEFtZXJpY2EuDQoNCiFbXShBQ0EucG5nKQ0KDQotIEludHJvZHVjZWQgYW5kIGNoYW1waW9uZWQgU2hpbnkgZm9yIHJhcGlkIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50DQotIERldmVsb3BlZCB2YXJpb3VzIG1vZGVscyBhbmQgcHJvY2VzcyBpbXByb3ZlbWVudHMgdXNpbmcgUiB0b29sIGtpdA0KDQoqKkJhbmsgb2YgQW1lcmljYSB3b3JrOioqDQoNCiFbXShodHRwczovL3d3dy51bmRlcmNvbnNpZGVyYXRpb24uY29tL2JyYW5kbmV3L2FyY2hpdmVzL2Jhbmtfb2ZfYW1lcmljYV9sb2dvX2FuaW1hdGlvbl9uZXdfYS5naWYpDQoNCi0gTW9kZWxpbmcgTGVhZCBmb3IgQ29uc3VtZXIgQmVoYXZpb3IgTW9kZWxpbmc6DQotIFdvcmtlZCBvbiBSaXNrIE1vZGVscyBmb3IgYSB5ZWFyDQotIEN1cnJlbnRseSB3b3JraW5nIG9uIElubm92YXRpb24gdGVhbSAoQmVzdCBqb2IgSSB0aGluayBJIHdpbGwgZXZlciBoYXZlKToNCiAgLSBOZXcgbW9kZWxpbmcgaWRlYXMNCiAgLSBOZXcgYXJlYXMgb2YgdGhlIGJ1c2luZXNzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIG1vZGVsaW5nIGtub3dsZWRnZQ0KICAtIEFwcGxpY2F0aW9uIG9mIGRlZXAgbGVhcm5pbmcNCg0KIyAqKldoYXQgaXMgdGhpcyBwcmVzZW5hdGlvbj8qKg0KDQojICoqSSBlbmpveSB0aGUgZGF0YSB2aXN1YWxpemF0aW9uIHNpZGUgb2YgZGF0YSBzY2llbmNlKioNCg0KIyMgKipnZ3Bsb3Qgd2FzIGFsd2F5cyBnbyB0b28gZm9yIG15IGRhdGEgc2NpZW5jZSBuZWVkcyoqDQoNCi0gc2ltcGxlIGludHVpdGl2ZSBzeW50YXggdG8gd3JpdGUgYW5kIHJlYWQNCi0gd2lkZSByYW5nZSBvZiB1c2VmdWwgZ2VvbXMgdG8gc29sdmUgY29tbW9uIG1vZGVsaW5nIHByb2JsZW1zDQotIGludGVncmF0ZXMgd2VsbCB3aXRoIHRoZSByZXN0IG9mIHRpZHl2ZXJzZQ0KDQotIChCaWcgc3RlcCBmb3J3YXJkIGZyb20gbGF0dGljZSBhbmQgYmFzZSBncmFwaGljcykNCg0KDQoNCiMjIyAqKmdncGxvdCBpcyBhbiBhZG9wdGlvbiBvZiB0aGUgcHJlY2VwdHMgbGFpZCBvdXQgaW4gdGhlIEdyYW1tYXIgb2YgR3JhcGhpY3MqKiANCg0KIVtdKEdHX2NvbmNlcHRzLnBuZykNCg0KIyMgZ2dwbG90IGRvZXNuJ3QgbGVuZCBpdHNlbGYgdG8gaW50ZXJhY3Rpdml0eQ0KDQotIHNldmVyYWwgZWZmb3J0cyBoYXZlIGludHJvZHVjZWQgaW50ZXJhY3Rpdml0eSANCiAgLSBnZ3Zpcw0KICAtIHJnZ29iaQ0KICAtIGlQbG90cw0KICAtIGh0bWx3aWRnZXRzDQogIC0gcjJkMw0KDQojIGh0bWx3aWRldHMgYW5kIHIyZDMgYXJlIGFuIGFkYXB0YXRpb24gb2YgRDMvamF2YXNjcmlwdCB0ZWNobm9sb2d5DQoNCiMjIEQzIGlzIGEgamF2YXNjcmlwdCBwYWNrYWdlIHRoYXQgaXMgdmVyeSBpbXBvcnRhbnQgaW4gZGF0YSB2aXN1YWxpemF0aW9uDQoNCi0gV3JpdHRlbiBpbiBhIGxhbmd1YWdlIHRoYXQgaW50ZWdyYXRlcyB3aXRoIHdlYiBkZXZlbG9wbWVudA0KLSBVc2VzIGRhdGEgdG8gbWFuaXB1bGF0ZSB0aGUgd2ViIGRvY3VtZW50IHRocm91Z2ggdmFyaW91cyBvYmplY3RzIChTVkcpDQotIFJlbGVhc2VkIGluIDIwMTENCg0KIyMjIFVzZWZ1bCBleGFtcGxlcyBvZiBwb3dlciBhbmQgaW50ZXJhY3Rpdml0eToNCg0KIyBTdW5idXJzdCBFeGFtcGxlDQoNCiFbXShodHRwczovL2kuc3RhY2suaW1ndXIuY29tL0g2TzJLLmdpZikNCg0KIyBEZW5zaXR5IG92ZXIgdGltZQ0KDQohW10oaHR0cHM6Ly9tZWRpYS5naXBoeS5jb20vbWVkaWEvTlRqaXVza0lNRTZhd0tuMW5EL2dpcGh5LmdpZikNCg0KW0RlY2lzaW9uIFRyZWUgRXhhbXBsZV0oaHR0cDovL2JsLm9ja3Mub3JnL2ZyYWN0YWx5dGljcy9yYXcvNDk1YjYzY2Y2NzFiNGM0ODdiYzQwODAxMzY2Mzg0ZTAvKQ0KDQoNCiMgKipEMyBQcm9zIGFuZCBDb25zKioNCg0KKlByb3MqDQotIFZlcnkgZmxleGlibGUgYW5kIHBvcnRhYmxlDQotIEludGVyYWN0aXZpdHkgcGFydCBvZiB0aGUgZG5hDQotIExvb2tzIHZlcnkgcHJvZmVzc2lvbmFsIGFuZCBwb2xpc2hlZA0KDQoqQ29ucyoNCi0gVmVyeSBzdGVlcCBsZWFybmluZyBjdXJ2ZQ0KICAtIEFQSSByZXF1aXJlcyBkZWNlbnQgdW5kZXJzdGFuZGluZyBvZiBob3cgamF2YXNjcmlwdA0KLSBDZW50ZXJlZCBvbiB3ZWJkZXZlbG9wbWVudCBpbnN0ZWFkIG9mIGRhdGEgc2NpZW5jZQ0KLSA/RmFsbGluZyBvdXQgb2YgZmF2b3I/DQoNCiMjIFdoYXQgaXMgdGhlIGFuc3dlcj8NCg0KIyAqKlBsb3QubHkgaXMgYSBzb2x1dGlvbiB3aXRoIGEgc2ltcGxlciBBUEkgYW5kIG91dCBvZiB0aGUgYm94IGludGVyYWN0aXZpdHkqKg0KDQpFc3NlbnRpYWxseSBwbG90Lmx5IGlzIEFQSSB3cmFwcGVyIGZvciBzZXZlcmFsIEQzDQoNCg0KIyAqKkhvdyBkb2VzIHRoZSBwbG90bHkgcGFja2FnZSB3b3JrKioNCg0KS2V5IHRvIHVuZGVyc3RhZGluZyBwYWNrYWdlIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IHRyYW5zZm9ybXMgdGhlIGRhdGENCg0KLSBEYXRhIGVudGVycyBpbiBSIGZvcm1hdHMNCi0gVHJhbnNmb3JtZWQgdG8gbGlzdCBmb3JtYXQgDQotIFRyYW5mb3JtZWQgdG8gSlNPTiBmb3JtYXQNCg0KQmVsb3cgaXMgYSB1c2VmdWwgZGlhZ3JhbSBzaG93aW5nIGhvdyB0aGUgZmluYWwgcHJlc2VudGF0aW9uIGlzIGRvbmUuDQoNCiFbXShwbG90bHlfZGF0YV90cmFuc2Zvcm0uc3ZnKQ0KDQoqKlBsb3RseSB1c2VzIHR3byBrZXkgY29tcG9uZW50czoqKg0KDQoxLiBEYXRhL1RyYWNlOg0KICAtIENvbm5lY3Rpb24gYmV0d2VlbiBkYXRhIGFuZCB2aXN1YWxzDQogIC0gVHJhY2VzIGhhdmUgdHlwZXMgKHNjYXR0ZXIgcGxvdCwgaGlzdG9ncmFtcywgc3VuYnVyc3QsIGV0Yy4pDQogIC0gVHJhY2UgdHlwZXMgaGF2ZSBzcGVjaWZpYyBhdHR0cmlidXRlcyB0aGF0IGNhbiBiZSBkZWZpbmVkLg0KMi4gTGF5b3V0DQoNCg0KIyAqKmdncGxvdGx5KCkgdG8gdGhlIHJlc2N1ZSoqDQoNCklmIHlvdSBoYXZlIHBsb3RzIGluIGdncGxvdCwgeW91IGNhbiBzdGFydCB1c2luZyBwbG90bHkgd2l0aCBqdXN0IGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgb24gbW9zdCBnZ3Bsb3Qgb2JqZWN0cy4NCg0KDQpMZXQncyBtYWtlIGEgZ2dwbG90IGZyb20gUHJvcHNlciBkYXRhLiAgDQpgYGB7cn0NCmFtdF9maW5fcCA9IHByb3NfYWdnJT4lDQogIGdncGxvdChhZXMob3JpZ2luYXRpb25fZGF0ZSxhdmdfYW10X2JvcnJvd2VkKSkrDQogIGdlb21fbGluZShhZXMoY29sb3IgPSBwcm9zcGVyX3JhdGluZykpDQoNCmFtdF9maW5fcA0KYGBgDQoNClNpbXBsZSBnZ3Bsb3RseSBjb21tYW5kIGFkZHMgdGhlIHRvb2x0aXAsIHpvb21pbmcsIA0KDQpgYGB7cn0NCmdncGxvdGx5KGFtdF9maW5fcCkNCmBgYA0KDQpOb3cgdGhlIHBsb3RseSBzeW50YXg6DQoNCmBgYHtyfQ0KcHJvc19hZ2clPiUNCiAgcGxvdF9seSh4ID0gfm9yaWdpbmF0aW9uX2RhdGUsIHkgPSB+YXZnX2FtdF9ib3Jyb3dlZCwgY29sb3IgPSB+cHJvc3Blcl9yYXRpbmcsIHR5cGUgPSAnc2NhdHRlcicsIG1vZGUgPSAnbGluZXMnKQ0KIyAgYWRkX2xpbmVzKGNvbG9yID0gfnByb3NwZXJfcmF0aW5nKQ0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KcGxvdChjYXJzKQ0KYGBgDQoNCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHByZXNzaW5nICpDdHJsK0FsdCtJKi4NCmBgYHtyfQ0KDQpgYGANCg0KV2hlbiB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIGFuIEhUTUwgZmlsZSBjb250YWluaW5nIHRoZSBjb2RlIGFuZCBvdXRwdXQgd2lsbCBiZSBzYXZlZCBhbG9uZ3NpZGUgaXQgKGNsaWNrIHRoZSAqUHJldmlldyogYnV0dG9uIG9yIHByZXNzICpDdHJsK1NoaWZ0K0sqIHRvIHByZXZpZXcgdGhlIEhUTUwgZmlsZSkuDQoNClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4NCg==